
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/wait.h>
 
int main()
{
    pid_t pid;
    int cnt = 0;
    int staus = 0;
    
    pid = vfork();
 
    if (pid > 0)
    {
        printf(" %d 子进程产生了 \n", pid);
        
        // wait(&staus);
        waitpid(pid,&staus,WNOHANG);
        while(1)
        {
            if(staus > 0){
                printf(" 主程序退出 \n");
                
                exit(0);
            }
            printf("cnt: %d  staus:%d\n", cnt,staus);
            printf("This is parent print, pid: %d\n", getpid());
            sleep(3);
        }
    }
    else if (pid == 0)
    {
        while (1)
        {
            printf("This is child print, pid: %d\n", getpid());
            sleep(1);
            cnt++;
            if (cnt == 3)
            {
                exit(0);
            }  
        }   
    }
    
    return 0;   
}